package ru.payment.wm;

import java.util.Date;

/**
 * User: sergey
 * Date: 22.04.2009
 * Time: 16:36:18
 *
 * параметры выполненного перевода (транзакции)
 */
public interface Operation {

  /** атрибут id - уникальный номер транзакции в системе учета WebMoney */
  String getWmOperationId();

  /** атрибут id - уникальный номер транзакции в системе учета WebMoney */
  void setWmOperationId(String wmOperationId);

  /** атрибут ts - служебный номер транзакции в системе учета WebMoney */
  String getWmTsId();

  /** атрибут ts - служебный номер транзакции в системе учета WebMoney */
  void setWmTsId(String wmTsId);

  /** номер перевода. 	номер перевода в системе учета отправителя; любое целое число без знака, должно быть уникальным (два перевода с одним и тем же tranid невозможен) */
  long getTransactionId();

  /** номер перевода. 	номер перевода в системе учета отправителя; любое целое число без знака, должно быть уникальным (два перевода с одним и тем же tranid невозможен)  */
  void setTransactionId(long transactionId);

  /** номер кошелька с которого выполняется перевод (отправитель) */
  String getPurseSrc();

  /** номер кошелька с которого выполняется перевод (отправитель) */
  void setPurseSrc(String purseSrc);

  /** номер кошелька, на который выполняется перевод (получатель) */
  String getPurseDest();

  /** номер кошелька, на который выполняется перевод (получатель) */
  void setPurseDest(String purseDest);

  /** сумма платежа */
  float getAmount();

  /** сумма платежа */
  void setAmount(float amount);

  /** комиссия за выполненный платеж */
  float getComission();

  /** комиссия за выполненный платеж */
  void setComission(float comission);

  /** тип перевода (платежа) */
  OperationType getType();

  /** тип перевода (платежа) */
  void setType(OperationType type);

  /** срок протекции сделки в днях. целое число от 0 до 255; если 0 - платеж без протекции сделки */
  int getPeriod();

  /** срок протекции сделки в днях. целое число от 0 до 255; если 0 - платеж без протекции сделки */
  void setPeriod(int period);

  /** номер счета (в системе WebMoney), по которому выполняется перевод. целое число > 0; если 0 - перевод не по счету */
  long getWmInvoiceId();

  /** номер счета (в системе WebMoney), по которому выполняется перевод. целое число > 0; если 0 - перевод не по счету */
  void setWmInvoiceId(long wmInvoiceId);

  /** номер счета (в системе магазина, выдавшего счет), по которому выполняется перевод. целое число > 0; если 0 - перевод не по счету */
  long getOrderId();

  /** номер счета (в системе магазина, выдавшего счет), по которому выполняется перевод. целое число > 0; если 0 - перевод не по счету */
  void setOrderId(long orderId);

  /** описание оплачиваемого товара или услуги */
  String getDescription();

  /** описание оплачиваемого товара или услуги */
  void setDescription(String description);

  /** дата и время выполнения операции */
  Date getCreateDate();

  /** дата и время выполнения операции */
  void setCreateDate(Date createDate);

  /** дата и время последнего изменения состояния операции */
  Date getUpdateDate();

  /** дата и время последнего изменения состояния операции */
  void setUpdateDate(Date updateDate);

  /** WMID корреспондента */
  String getCorrespondentWmId();

  /** WMID корреспондента */
  void setCorrespondentWmId(String correspondentWmId);

  /** остаток после выполнения операции */
  float getRest();

  /** остаток после выполнения операции */
  void setRest(float rest);
  
}
